#ifndef _EQCLIENT_WINDOW_H
#define _EQCLIENT_WINDOW_H

#include <memory>

#include <eq/window.h>

#include "gl_texture.h"
#include "shaderprogram.h"

namespace eqClient
{
    class Window : public eq::Window
    {
        public:
            Window(eq::Pipe* parent);
            
            GLTexture&     getShadowMap()        { return *shadowMap; }
            ShaderProgram& getShadowMapProgram() { return *shadowMapProgram; }
            ShaderProgram& getIllumProgram()     { return *illumProgram; }
            
        protected:
            virtual bool configInitGL(const eq::uint128_t& initID);
            virtual bool configExitGL();
            virtual bool processEvent(const eq::Event& event);
            
    private:
        std::auto_ptr<GLTexture> shadowMap;
        std::auto_ptr<ShaderProgram> shadowMapProgram;
        std::auto_ptr<ShaderProgram> illumProgram;
        std::auto_ptr<ShaderProgram> finalProgram;
    };
}

#endif
